import type {
  CallEmployeeVO,
  CallLog,
  CallTaskDataForm,
  CallTaskDataQuery,
  CallTaskForm,
  CallTaskQuery,
  CallTaskVO,
} from './model';

import type { ID, IDS, PageResult } from '#/api/common';
import type { EmployeeVO } from '#/api/company/audience/model';

import { commonExport } from '#/api/helper';
import { requestClient } from '#/api/request';

/**
 * 分页查询呼叫联络任务列表
 * @param params
 * @returns 呼叫联络任务列表
 */
export function callTaskPage(params?: CallTaskQuery) {
  return requestClient.get<PageResult<CallTaskVO>>('/call/task/page', {
    params,
  });
}

/**
 * 查询呼叫联络任务列表
 * @param params
 * @returns 呼叫联络任务列表
 */
export function callTaskList(params?: CallTaskQuery) {
  return requestClient.get<CallTaskVO[]>('/call/task/list', { params });
}

/**
 * 导出呼叫联络任务列表
 * @param params
 * @returns 呼叫联络任务列表
 */
export function callTaskExport(params?: CallTaskQuery) {
  return commonExport('/call/task/export', params ?? {});
}

/**
 * 查询呼叫联络任务详情
 * @param id id
 * @returns 呼叫联络任务详情
 */
export function callTaskInfo(id: ID) {
  return requestClient.get<CallTaskVO>(`/call/task/${id}`);

  // console.log(id);
  // return {
  //   id: '1958772270242017282',
  //   name: '2026开发-电子产品已到场',
  //   exhibitionId: '1952599658903453698',
  //   exhibitionName: '2026ITES深圳工业展',
  //   number: 27,
  //   callNum: 329,
  //   startDate: '2025-08-22',
  //   endDate: '2025-08-30',
  //   smsTemplateIds: ['1944578726330998786'],
  //   smsTemplateList: [
  //     {
  //       createDept: 103,
  //       createBy: 1,
  //       createTime: '2025-07-14 10:04:32',
  //       updateBy: 1,
  //       updateTime: '2025-07-14 16:04:39',
  //       id: '1944578726330998786',
  //       smsType: 2,
  //       smsName: '0325 普通观众到场提醒',
  //       smsContent:
  //         '【ITES深圳工业展】制造业年度大展明日开幕！机床装备、智能制造，千余家展商等您相见。\n宝安区福海街道展城路1号\n展商名录： https://dwz.cn/iOhF9ak0 ',
  //       status: '0',
  //       remark: '测试',
  //       createByName: 'ITES深圳工业展',
  //       updateByName: 'ITES深圳工业展',
  //     },
  //   ],
  //   emailTemplateIds: ['1958772270242017282'],
  //   emailTemplateList: [
  //     {
  //       id: '1958772270242017282',
  //       emailType: 2,
  //       emailName: '0815自动化招商邮件正式发送',
  //       emailSubject: '点击了解重点行业形势，抢占自动化订单成交先机！',
  //       emailOssId: '1958773337046462466',
  //       status: '0',
  //       remark: '',
  //       createDept: 103,
  //       createBy: 1,
  //       createTime: '2025-08-22 14:04:36',
  //       updateBy: 1,
  //       updateTime: '2025-08-22 14:08:52',
  //       createByName: 'ITES深圳工业展',
  //       updateByName: 'ITES深圳工业展',
  //     },
  //   ],
  //   status: '0',
  //   remark:
  //     '【ITES深圳工业展】制造业年度大展明日开幕！机床装备、智能制造，千余家展商等您相见。\n宝安区福海街道展城路1号\n展商名录： https://dwz.cn/iOhF9ak0 ',
  //   completionRate: 30,
  //   createBy: 1,
  //   createName: 'ITES深圳工业展',
  //   createTime: '2025-08-22 14:04:36',
  //   updateBy: 1,
  //   updateTime: '2025-08-22 14:08:52',
  //   createByName: 'ITES深圳工业展',
  //   updateByName: 'ITES深圳工业展',
  // };
}

/**
 * 新增呼叫联络任务
 * @param data
 * @returns void
 */
export function callTaskAdd(data: CallTaskForm) {
  return requestClient.postWithMsg<void>('/call/task', data);
}

/**
 * 更新呼叫联络任务
 * @param data
 * @returns void
 */
export function callTaskUpdate(data: CallTaskForm) {
  return requestClient.putWithMsg<void>('/call/task', data);
}

/**
 * 更新呼叫联络任务状态
 * @param data
 * @returns void
 */
export function callTaskUpdateStatus(data: CallTaskForm) {
  return requestClient.putWithMsg<void>(`/call/task/changeStatus`, data);
}

/**
 * 删除呼叫联络任务
 * @param id id
 * @returns void
 */
export function callTaskRemove(id: ID | IDS) {
  return requestClient.deleteWithMsg<void>(`/call/task/${id}`);
}

/**
 * 分页查询任务下的呼叫观众列表
 * @param params
 * @returns 观众人员列表
 */
export function callTaskDataPage(params?: CallTaskDataQuery) {
  return requestClient.get<PageResult<CallEmployeeVO>>('/call/employee/page', {
    params,
  });
}

/**
 * 新增呼叫任务观众人员数据
 * @param data
 */
export function callTaskDataAdd(data: CallTaskDataForm) {
  return requestClient.postWithMsg<void>('/call/employee/add', data);
}

/**
 * 删除呼叫任务观众人员数据
 * @param ids 观众人员ID集合
 * @returns void
 */
export function callTaskDataRemove(ids: IDS) {
  return requestClient.deleteWithMsg<void>(`/call/employee/${ids}`);
}

/**
 * 变更观众人员呼叫状态
 * @param data
 */
export function callTaskChangeCallStatus(data: CallTaskDataForm) {
  return requestClient.put<void>('/call/employee/changeCallStatus', data);
}

/**
 * 查询联络任务呼叫工作台数据
 * @param taskId 联络任务ID
 */
export function callTaskWorkbenchQuery(taskId?: ID) {
  return requestClient.get<EmployeeVO>('/call/employee/query', {
    params: { taskId },
  });
}

/**
 * 查询观众人员详情（邮箱不脱敏）
 * @param employeeId
 */
export function callTaskEmployeeNoDesensitizeInfo(employeeId: ID) {
  return requestClient.get<EmployeeVO>(
    `/employee/email/no/desensitize/${employeeId}`,
  );
}

/**
 * 查询是否为呼叫任务下的呼叫人员
 * @param taskId
 */
export function callTaskIsCallUser(taskId: ID) {
  return requestClient.get<boolean>('/call/employee/isCallUser', {
    params: { taskId },
  });
}

/**
 * 为观众人员预登记
 * @param employeeId
 */
export function callTaskAutoRegister(employeeId?: ID) {
  return requestClient.getWithMsg<void>('/call/employee/register', {
    params: { employeeId },
  });
}

/**
 * 为观众人员发送短信
 * @param templateId 短信模板id
 * @param employeeId 观众人员ID
 */
export function callTaskSendSms(templateId: ID, employeeId: ID) {
  return requestClient.getWithMsg<void>('/call/employee/sendSms', {
    params: { templateId, employeeId },
  });
}

/**
 * 为观众人员发送邮件
 * @param templateId 邮件模板id
 * @param employeeId 观众人员ID
 */
export function callTaskSendEmail(templateId: ID, employeeId: ID) {
  return requestClient.getWithMsg<void>('/call/employee/sendEmail', {
    params: { templateId, employeeId },
  });
}

/**
 * 呼叫联络日志新增
 * @param data
 */
export function callLogAdd(data: CallLog) {
  return requestClient.postWithMsg<void>('/call/log', data);
}

/**
 * 查询呼叫联络日志列表 - 不分页
 * @param params
 */
export function callLogList(params?: any) {
  return requestClient.get<CallLog[]>('/call/log/list', {
    params,
  });
}
